package pe.gob.servir.web.apps.censodirectivo.controller.util;

import java.util.Date;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
 
@FacesValidator("fechaHabRangoValidador")
public class FechaHabRangoValidador implements Validator {
     
    @Override
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
    	if (value == null) {
            return;
        }
         
        //Leave the null handling of startDate to required="true"
    	Object startDateValue = component.getAttributes().get("fechaInicio");
    	Object endDateValue = component.getAttributes().get("fechaFin");
    	
        System.out.println("Fecha Obtenida: "+startDateValue);
        if (startDateValue==null) {
            return;
        }
        
        if (endDateValue==null) {
            return;
        }
        
        Date startDate = (Date)startDateValue;
        Date endDate = (Date)endDateValue;
        
        Date endDateHab = (Date)value;
        if (endDateHab.before(startDate)) {
             FacesMessage message = new FacesMessage("La 'Fecha Hasta' del Periodo del Censo no puede ser anterior a la 'Fecha Desde' del Periodo del Censo.");
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
            throw new ValidatorException(message);
        }else if (endDate.before(endDateHab) || endDate.equals(endDateHab))
        {
        	FacesMessage message = new FacesMessage("La 'Fecha Hasta' del Registro de Directivo no puede ser igual o anterior a la 'Fecha Hasta' del Periodo del Censo.	");
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
            throw new ValidatorException(message);
        }
    }
}
